{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "e6e0fe38",
   "metadata": {},
   "source": [
    "* 本周主要内容：API、机器学习与人工智能\n",
    "* 时间：week01\n",
    "* 记录人：赖文佩"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ee6a010",
   "metadata": {},
   "source": [
    "##  API\n",
    "### 1. 什么是API\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "### 2. API对于我们的学习要求（现在或未来所扮演的职场角色）\n",
    "\n",
    "我门可能面临的现状：\n",
    "\n",
    "* 产品经理位置尴尬，业务人员视我们为技术人员，工程团人员认为我们是“经理人”，在软件开发方面没有真正的技能。\n",
    "\n",
    "* 产品经理PM技能三位一体，有业务丶技术丶及设计。\n",
    "\n",
    "* 在所有的网络技术中，对于产品经理来说，API似乎越来越重要，因为越来越多的产品提供的API，不但可做酷炫的事，也能开拓新机会增加客户和收入。\n",
    "\n",
    "### 3.API的商业案例\n",
    "\n",
    "企业通常以3种不同的方式使用API：\n",
    "\n",
    "- 构建自己的API供内部使用（常见，通常与程序员对接）\n",
    "- 与第三方API集成\n",
    "- 为您的客户构建和公开您自己的API\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0373d12c",
   "metadata": {},
   "source": [
    "#### 与第三方API集成\n",
    "\n",
    "通过与其他公司的API连接，您的产品可以快速添加功能，否则那些功能和工具需要花数年来构建。\n",
    "\n",
    "产品经理通常和工程团队讨论功能集的各项任务，决定哪些任务将通过第三方的API来执行。\n",
    "\n",
    "如今，大多数产品都以这种或那种方式与API集成。 以下是当今全球数百万网站广泛使用的开放API的几个示例：\n",
    "\n",
    "##### 用例1:豆瓣API、网易云音乐API\n",
    "\n",
    "- 将豆瓣API嵌入到您的微信小程序开发中\n",
    "- 允许用户使用网易云音乐 API在您的网站上搜索音乐\n",
    "\n",
    "##### 用例2:Google Maps API，高德地图API\n",
    "\n",
    "- 大众点评通过您的附近位置搜索所需要的分类列表\n",
    "- 饿了么通过地图路径规划给予骑手最优路线\n",
    "##### 用例3:支付宝，微信支付 API\n",
    "\n",
    "- 为商家处理付款\n",
    "- 为客户设置每月定期订阅\n",
    "##### 用例4:face++，Azure 认知服务\n",
    "\n",
    "- 通过**人脸识别**提供人脸精确位置坐标\n",
    "- Azure API 提供人工智能服务接口"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e1b1cd89",
   "metadata": {},
   "source": [
    "### 4.阅读（关于API的重要知识点）\n",
    "\n",
    "#### 1.有关API的10个最重要的术语\n",
    "\n",
    "1. (HTTP) Requests and Responses： HTTP请求和响应\n",
    "2. REST：以资源为中心设计的互联系统表达型式\n",
    "3. (HTTP) Methods：HTTP方法\n",
    "4. (API) Endpoints：API端点\n",
    "5. API documentation：API文档\n",
    "6. API calls：API调用\n",
    "7. (HTTP) Payloads：HTTP酬载\n",
    "8. (HTTP) Response codes：HTTP响应状态码\n",
    "9. (HTTP) Headers：HTTP首部\n",
    "10. Authentication：认证\n",
    "\n",
    "#### 2. HTTP请求和响应\n",
    "\n",
    "(HTTP) Requests and Responses (HTTP请求和响应)，指的是HTTP协议中，用于客户端和服务器端之间的通信。HTTP协议通过请求和响应的交换达成通信。\n",
    "\n",
    "- 请求访问资源的一端称为客户端 (client side)\n",
    "- 提供资源响应的一端称为服务器端 (server side)\n",
    "- 请求必定由客户端发出，而服务器端回复响应\n",
    "- HTTP 是不保存状态，即无状态（stateless）的协议\n",
    "- Web网页及API都使用HTTP协议\n",
    "- API使用HTTP请求和响应用例：\n",
    "  - 向Spotify API发送请求(Requests)，告诉Spotify我想要检索哪个专辑，使用某专辑ID请求歌曲列表\n",
    "  - Spotify响应(Responses)，以'JSON'语言的数据格式响应某专辑中的歌曲列表\n",
    "- API文档应明白交待，请求应该是什么，以及对映的响应中期待回传结果是什么。\n",
    "\n",
    "#### 3. REST：以资源为中心设计的互联系统表达型式\n",
    "\n",
    "REST （Representational State Transfer）是以资源为中心设计的互联系统架构表达型式。\n",
    "\n",
    "- RESTful API的基本特征是：基于资源（Resource-based）的表达型式（Representations）。资源常是名词，如 一个人，一个用户，一个pdf，一个地址等。 名词可以用各种表达型式。\n",
    "- 调用API获得的响应是在客户端和服务器之间传输的资源的表达型式。\n",
    "- JSON是REST API常用的资源表达型式语言。\n",
    "- RESTful架构的6个准则要件：\n",
    "  - 统一接口（通常使用HTTP及资源，HTTP动词作为操作行为：如GET，PUT，POST，DELETE）\n",
    "  - 无状态 - 每个请求都有足够的信息供服务器处理消息。\n",
    "  - 客户端-服务器架构：始终是客户端/服务器连接，而不是，举例来说，与数据库的直接连接。\n",
    "  - 可缓存 - 服务器响应必须是可缓存的。\n",
    "  - 分层系统\n",
    "  - 按需编码\n",
    "- 对产品经理来说，REST是一套准则，遵循这些准则的API才能叫做RESTful API\n",
    "- 一套准则意谓着一致性。这一致性让开发人员可以更轻松地使用多种不同的API。\n",
    "- 不需要学习API特定的方法，REST API都使用相同的HTTP方法：\n",
    "  - POST\n",
    "  - GET\n",
    "  - PUT\n",
    "  - PATCH\n",
    "  - DELETE\n",
    "- 由Roy Fielding 提出，用来描述互联系统架构。为什么称为 REST？Web 本质上由各种各样的资源组成，资源由 URI 唯一标识。浏览器（或者任何其它类似于浏览器的应用程序）将展示出该资源的一种表现方式，或者一种表现状态。如果用户在该页面中定向到指向其它资源的链接，则将访问该资源，并表现出它的状态。这意味着客户端应用程序随着每个资源表现状态的不同而发生状态转移，也即所谓 REST。\n",
    "  - REST 设计原则遵循 ROA（Resource-Oriented Architecture，面向资源的体系架构）。ROA 是一种把实际问题转换成 REST 式 Web 服务的方法，它使得 URI丶HTTP 和 XML 具有跟其他 Web 应用一样的工作方式。\n",
    "  - ROA遵循以下的步骤：\n",
    "    - 分析应用需求中的数据集。\n",
    "    - 映射数据集到 ROA 中的资源。\n",
    "    - 对于每一资源，命名它的 URI。\n",
    "    - 为每一资源设计其 Representations。\n",
    "    - 用 hypermedia links 表述资源间的联系。\n",
    "\n",
    "#### 4. (HTTP) Methods：HTTP方法\n",
    "\n",
    "使用API时，会使用称为HTTP方法的信息来请求信息。在REST下，名词是REST资源，动词则是HTTP标准的方法\n",
    "\n",
    "- 不需要学习API特定的方法，REST API都使用相同的HTTP方法：\n",
    "  - POST\n",
    "  - GET\n",
    "  - PUT\n",
    "  - PATCH\n",
    "  - DELETE\n",
    "- 最常用的HTTP方法是创建(create)，读取(read)，更新(update)和删除(delete)信息，这4常见方法的首字母缩略词为CRUD\n",
    "- 产品人员最常用的方法是POST和GET，它允许您创建或读取和检索信息。\n",
    "- GET很简单，被认为是所有方法中最安全的，因为它不会更新任何信息。\n",
    "- 以下是最常见的HTTP方法的摘要：\n",
    "  - GET\n",
    "    - 用于**读取/检索**资源\n",
    "    - 执行GET方法时，响应包含您请求的信息。\n",
    "    - GET请求仅用于读取数据而不是更改数据。这意味着它们被认为是安全的。\n",
    "  - POST\n",
    "    - 用于**创建**新资源。\n",
    "    - 例如，如果我们想使用Twilio API创建新的文本消息，我们将使用POST方法，因为这是您创建新资源的方式（资源是文本消息）。\n",
    "  - PUT\n",
    "    - 用于**更新/替换**资源。\n",
    "    - 例如，更新用户的电子邮件地址。\n",
    "  - DELETE\n",
    "    - 用于**删除**数据。           \n",
    "#### 5. API 的角色"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be9e1b60",
   "metadata": {},
   "source": [
    "## 2. 人工智能\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "## 3. 机器学习 \n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "## 4. AI&ML -API角色（理解与实践）\n",
    "\n",
    "### 1. 学习价值目标\n",
    "\n",
    "\n",
    "\n",
    "### 2. API课程定位架构\n",
    "\n",
    "\n",
    "### 3. 产品经理定位（数据智能？新文科、新商科、新工科？）\n",
    "\n",
    "\n",
    "\n",
    "## 5. 智能App设计师"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e626fbfc",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
